from jsonschema import validate, ValidationError

from tools.file_tools import FileTools
# TODO 初始化日志配置（让自定义日志配置生效，因为是两套不同的日志框架，所以只有成功的用例可以看到请求响应报文）
from tools.log_tools import LogTools
LogTools()
from loguru import logger


# 标准响应码
def standard_code():
    logger.info("standard_code标准响应码获取")
    return 200

# 打印传递的响应body
def print_response_body(response):
    logger.info(f"debugtalk函数获取的响应报文：{response}")
    return True

# jsonschema断言校验
# 参数：response: 响应报文，schema_file_path: jsonschema规则文件路径
# 调用示例（注意花括号内层需省略）：.assert_equal("${json_schema_assert($resp_body, $notice_schema_file_path)}", True)
def json_schema_assert(response, schema_file_path):
    logger.info(f"开始验证jsonschema, debugtalk函数获取的响应报文：{response}")
    # 获取jsonschema规则规则文件
    schema = FileTools.read_json(schema_file_path)
    # 验证
    try:
        validate(instance=response, schema=schema)
        logger.info("数据验证成功！")
        return True
    except ValidationError as e:
        logger.error(f"数据验证失败：{e.message}")
        return False